package cn.zxh.improvement.gencode.spi;

import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.element.TypeElement;
import java.lang.annotation.Annotation;

/**
 * 代码生成器处理器
 *
 * @author zxh
 * @since 2023/5/6 16:45:31
 */
public interface CodeGenProcessor {

    /**
     * 需要解析的类上的注解
     *
     * @return 注解
     */
    Class<? extends Annotation> getAnnotation();

    /**
     * 获取生成的包路径
     *
     * @param typeElement 元素
     * @return 路径
     */
    String generatePackage(TypeElement typeElement);

    /**
     * 代码生成逻辑
     *
     * @param typeElement      元素
     * @param roundEnvironment 环境
     * @throws Exception 异常
     */
    void generate(TypeElement typeElement, RoundEnvironment roundEnvironment) throws Exception;

}
